<?php

require_once "Basic.php";

class Modelo {

  /**
   * Dá todos os modelos para uma dada filial e data de início e fim que estão disponíveis.
   * Retorna na forma de array de items da função-tabela ModelosDisponiveis.
   */
  public static function getAll($filial, $dataInicio, $dataFim, $db = null) {
    $wasNull = false;
    if($db === null) {
      $wasNull = true;
      $db = new DBUtils();
      $db->connect();
    }
    
    $db->runQuery("select * from ModelosDisponiveis(?, ?, ?)", array($dataInicio, $dataFim, $filial));
    $all = array();
    for($item = $db->getItem(); $item !== null; $item = $db->getItem()) {
      $all[$item->idModelo] = $item;
    }
    
    if($wasNull) {
      $db->close();
    }
    
    return $all;
  }
  
  /**
   * Retorna os modelos disponíveis para ($filial,$dataInicio,$dataFim), assim como em getAll, só que a saída
   * estará preparada para ser "jogada" em um FormFieldChoice.
   */
  public static function getAllForChoice($filial, $dataInicio, $dataFim, $db = null) {
    $all = Modelo::getAll($filial, $dataInicio, $dataFim, $db);
    foreach($all as $k => &$v) {
      $qtdTotal = intval($v->quantidadeTotal);
      $qtdAlocada = intval($v->quantidadeAlocada);
      $qtdReservada = intval($v->quantidadeReservada);
      $v = $v->nomeModelo . " (" . ($qtdTotal - $qtdAlocada - $qtdReservada) . ")";
    }
    return $all;
  }

}
